/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
*----  RADIO DE UN CARRO  ----
*@author Luisa Mercedes Portillo Díaz
*Carné 10031		14 Julio 2011
*Descripcion: Este programa lo que basicamente realizara es crear un objeto radio
*en donde el 'cliente' podra escoger la emisora que desea escuchar y 
*podra guardar estaciones de radio. 
 */


public class Radio implements NuestraInterfaz{
    
    //Atributos
    private double[] matrizam;
    private double [] matrizfm;
    private double estacion;
    private boolean pow;
    private boolean amfm;
    private String emisora;
    private double mult;
    private double frec1;
    private double frec2;

    // ----------------------------------------------------------------------------
    // Inicializa los atributos y se agregan constantes, las cuales se iran modi-
    // ficando dependiendo lo que el cliente desea.

    public Radio() {
        matrizam = new double[12];
		matrizfm = new double[12];
		for(int i=0; i<12; i++){
			matrizam [i] = 530;
		}
		for(int j=0; j<12; j++){
			matrizfm [j] = 87.9;
		}
        estacion = 530;
	emisora = "AM";
        pow = false;
        amfm = false;
    }


    // ----------------------------------------------------------------------------
    // Se utiliza para encender o apagar el radio
    @Override
    public boolean power() {
	if(pow ==true){
            pow = false;
	}
	else{
            pow = true;
	}
	return pow;
    }

    // ----------------------------------------------------------------------------
    // Se utiliza para cambiar de emisora.
    // Ademas, se tienen los valores de cada limite de frecuencia
    // 		dependiendo de la emisora en la que se encuentra
    @Override
    public boolean cambio() {
        if (amfm == false) {            
            mult = 0.2;
            frec1 = 87.9;
            frec2 = 107.9;
            emisora = "FM";
            amfm = true;
        } 
	else {   
            mult = 10;
            frec1 = 530;
            frec2 = 1610;
            emisora = "AM";
            amfm = false;
        }
            estacion = frec1;
            return amfm;
        
    }

    // ----------------------------------------------------------------------------
    // Se utiliza para aumentar las estaciones en el radio.
    @Override
    public void fw() {
        if (estacion < frec2) {
            estacion += mult;
            estacion = (double)Math.round(estacion*10)/10;
            
        } else {
            estacion = frec1;
            estacion = (double)Math.round(estacion*10)/10;
            
        }
    }

    // ----------------------------------------------------------------------------
    // Se utiliza para retroceder las estaciones en el radio.
    @Override
    public void bw() {
        if (estacion > frec1) {
            estacion -= mult;
            estacion = (double)Math.round(estacion*10)/10;
            
        } else {
            estacion = frec2;
            estacion = (double)Math.round(estacion*10)/10;
            
        }
    }

    // ----------------------------------------------------------------------------
    // Se utiliza para guardar una estacion.
    @Override
    public void store(int boton) {
	if(amfm == true && emisora.equalsIgnoreCase("AM")){
		matrizam[boton] = estacion;
	}
	else{
		matrizfm[boton] = estacion;
        }
    }

    // ----------------------------------------------------------------------------
    // Se utiliza para seleccionar o mostar alguna estacion
    @Override
    public void select(int botons) {
        if(amfm == true && emisora.equalsIgnoreCase("AM")){
		estacion = matrizam[botons];
	}
	else{
		estacion = matrizfm[botons];
	}
    }
    
    @Override
    public void salir(){
    }

    // ----------------------------------------------------------------------------
    // Imprime el estado del radio del carro
        
    @Override
    public String toString() {
        String info = " ";
        info = "------- Estado del radio -------" + "\n";
        info += "Encendido."  + "\n";
        /*if (pow == true){
        	info += "Encendido. " + "\n";
        }	
        else{
        	info += "Apagado. " + "\n";
        }
         * 
         */
        info += "La estacion es: " + estacion + "\n";
        info += "La emisora es: " + emisora + "\n";
        return info;
    }
}
